package a02_Thread;

/**
 * @Author quan
 * @Description 中断方式2：通过调用isInterrupted()方法实现
 * @Date 2023/4/28 13:25
 */
public class Demo6_Interrupted2 {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(()->{
            //注意这里的判断条件：表示没有被中断指向下面的打印语句
            /**
             * while中的()内的内容15行和38行的状态设置主要是针对runnable状态的设置
             */
            while (!Thread.currentThread().isInterrupted()){
                System.out.println("hello Thread...");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    // 异常处理来中断线程：针对sleep状态的中断处理
                    // 方式一：啥也不做
                    // 方式二：处理具体的逻辑
                    // 方式三：真正的中断
                    /**
                     * break是针对sleep状态的中断
                     */
                    break;
                }
            }
            System.out.println("是否中断："+Thread.currentThread());
            System.out.println("线程任务结束");
        });
        thread.start();
        //主线程休眠3秒，模拟子线程处理任务
        Thread.sleep(3000);
        //中断线程，修改Thread的中断标志
        thread.interrupt();
        //让子线程先结束
        Thread.sleep(1000);
        System.out.println("主线程结束");
    }

}
